查看原文
其他

Substrate 概览|Substrate 的三种使用方式

Jimmy Chu PolkaWorld 2020-11-11

本文是 Substrate 文档的较高级别切入。

阅读所需的专业知识:为了最大限度地利用 Substrate,你应该对区块链概念和基本密码学有很好的了解。对诸如区块头、区块、客户端、哈希、交易和签名之类的术语应该很熟悉。目前,你也需要把 Rust 语言作为一种工作技能,去定制/适应 Substrate(尽管这不是我们的最终目标)。

Substrate 是一个区块链开发框架,具有完全通用的状态转换功能(STF[1])和模块化组件,用于共识、网络和配置。

尽管它是 “完全通用的”,但也有标准和约定,特别是 Substrate runtime 模块库(也称为 FRAME[2]),它是支持 STF 的底层数据结构,从而使快速开发区块链成为现实。

用法

Substrate 被设计用于以下三种方式:

  1. 使用 Substrate Node:你可以运行预先设计好的 Substrate 节点,并使用包含默认节点 runtime 的创世块对其进行配置。在这种情况下,你只需要配置一个 JSON 文件就可以启动自己的区块链。这为你提供了最少的自定义量,你只需要更改包含的 runtime 模块的生成参数,如:余额、staking、区块期、费用、治理等... 有关此操作的教程,请查看使用 Substrate 建立一个私有网络[3]
  2. 使用 Substrate FRAME:你可以使用 FRAME 轻松创建自己的自定义区块链。这为你在自己的区块链逻辑上提供了非常大的自由度,允许你更改数据类型、从模块库中选择并添加自己的自定义模块。由于区块生产逻辑是通过链上逻辑实现的,因此许多内容可以在不接触区块生产逻辑的情况下进行更改。如果是这种情况,那么现有的 Substrate 二进制文件可以用于出块和区块同步。如果需要修改出块逻辑,则必须将新的出块二进制文件构建为单独的项目并由验证人使用。这就是 Polkadot 中继链的构建方式,在不久的将来应该可以满足几乎所有的需求。有关此方面的教程,请参见创建你的第一条 Substrate 链[4]
  3. 使用 Substrate Core:你可以忽略整个 FRAME[5],从头开始设计和实现整个 runtime 。这可以使用任何面向 WebAssembly 的语言来完成。如果可以使 runtime 与 Substrate 节点的抽象区块生产逻辑兼容,那么你只需从 Wasm blob 构造一个新的 genesis 块,并使用现有的基于 Rust 的 Substrate 客户端启动链。如果没有,则需要更改客户端的区块生产逻辑,甚至可能更改区块头和区块序列化格式。就开发投入而言,这是迄今为止难度最高的 Substrate 使用方式,但同时也给了你最大程度的创新自由。

下一步

了解更多

  • 浏览我们的开发文档「使用 FRAME 进行模块开发」[6]

案例

  • 用 Substrate 开发你的第一条自定义区块链[7]
  • 用 Substrate 开发一条私有链[8]
  • 将 runtime 模块添加到 Substrate runtime[9]

参考

  • 查看 Rust 参考文档[10]

参考资料

[1]

STF: https://substrate.dev/docs/en/glossary#stf-state-transition-function

[2]

FRAME: https://substrate.dev/docs/en/conceptual/runtime/frame

[3]

使用 Substrate 建立一个私有网络: https://substrate.dev/docs/en/tutorials/start-a-private-network/

[4]

创建你的第一条 Substrate 链: https://substrate.dev/docs/en/tutorials/creating-your-first-substrate-chain/

[5]

FRAME: https://substrate.dev/docs/en/conceptual/runtime/frame

[6]

「使用 FRAME 进行模块开发」: https://substrate.dev/docs/en/development/module/

[7]

用 Substrate 开发你的第一条自定义区块链: https://substrate.dev/docs/en/tutorials/creating-your-first-substrate-chain/index

[8]

用 Substrate 开发一条私有链: https://substrate.dev/docs/en/tutorials/start-a-private-network-with-substrate

[9]

将 runtime 模块添加到 Substrate runtime: https://substrate.dev/docs/en/tutorials/adding-a-module-to-your-runtime

[10]

Rust 参考文档: https://substrate.dev/rustdocs/master


  • 欢迎学习 Substrate: 

    https://substrate.dev/

  • 关注 Substrate 进展:

    https://github.com/paritytech/substrate

  • 关注 Polkadot 进展:

    https://github.com/paritytech/polkadot

  • 申请 Bootcamp: 

    https://bootcamp.web3.foundation/

更多内容:


曹寅:波卡跨链网络将成为未来 DeFi2.0 新基础

平行链必须是区块链,Plasm layer2 可以是单个数据库 | PW 专访

波卡周报 | Gavin 发推,波卡即使没有平行链或多线程,仍可保持 1000 tx/s


扫码关注公众号,回复 “1” 加入波卡群

关注 PolkaWorld

发现 Web 3.0 时代新机遇


点个 “在看” 再走吧!


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存